Основні чисельні методи розв’язування систем лінійних диференціальних рівнянь

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2007
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Алгоритмічні основи криптології
Група:
ІБ – 44

Частина тексту файла

Міністерство освіти та науки України Національний університет “Львівська політехніка” Звіт про виконання лабораторної роботи №4 з курсу “Алгоритмічні основи криптології” на тему: “ Основні чисельні методи розв’язування систем лінійних диференціальних рівнянь ” Мета роботи: вивчити основні чисельні методи розв’язування систем лінійних диференціальних рівнянь. Завдання: написати програму на мові програмування Сі яка б розв’язувала диференціальне рівняння другого порядку методом Рунге – Кутта - Мерсона, попередньо звівши його до системи диференціальних рівнянь першого порядку. Диф. рн. Поч. умови Проміжок інт. Крок інт. Похибка   y(0)=1.38 y’(0)=-0.2 [1;2] 0.1 0.001   Блок – схема алгоритму роботи програми з постійним кроком  зі змінним кроком  функції f  Текст програми: з постійним кроком #include<stdio.h> #include<math.h> #include<conio.h> #define a 1 #define b 2 #define n 2 float f (int i, float x, float *y, float k) { switch (i) { case 0: return y[1]+k; default: return (-0.25*((y[0]+k)+2*(y[1]+k))/x); } } int main() { float k0,k1,k2,k3,k4,z,Rm[n]; int i; float h=0.1; float ym[n],x; x=a; ym[0]=1.38; ym[1]=-0.2; x=a-h; do { z=x; x+=h; for(i=0;i<n;i++) { k0=h*f(i,z,ym,0); k1=h*f(i,z+h/3,ym,k0/3); k2=h*f(i,z+h/3,ym,k0/6+k1/6); k3=h*f(i,z+h/2,ym,k0/8+3*k2/8); k4=h*f(i,z+h,ym,k0/2-3*k2/2+2*k3); Rm[i]=(-2*k0+9*k2-8*k3+k4)/30; ym[i]+=(k0+4*k3+k4)/6; } printf("x=%2.2f ",x); for(i=0;i<2;i++) { printf("y%i=%2.6f ",i+1,ym[i]); printf(" Rm%d=%0.10f ",i+1, Rm[i]); } putchar('\n'); } while (x<=b); return 0; } зі змінним кроком #include<stdio.h> #include<math.h> #include<conio.h> #define a 1 #define b 2 #define n 2 const int j=1; float f (int i, float x, float *y, float k) { switch (i) { case 0: return y[1]+k; default: return (-0.25*((y[0]+k)+2*(y[1]+k))/x); } } int main() { float k0,k1,k2,k3,k4,z,Rm[n]; int i; float h, e=0.001; float ym[n],x; h=0.1; x=a; ym[0]=1.38; ym[1]=-0.2; x=a-h; do { z=x; x+=h; for(i=0;i<n;i++) { j: k0=h*f(i,z,ym,0); k1=h*f(i,z+h/3,ym,k0/3); k2=h*f(i,z+h/3,ym,k0/6+k1/6); k3=h*f(i,z+h/2,ym,k0/8+3*k2/8); k4=h*f(i,z+h,ym,k0/2-3*k2/2+2*k3); Rm[i]=(-2*k0+9*k2-8*k3+k4)/30; if (Rm[i]<(e/30)) h*=2; if (Rm[i]>e){ h*=0.5; goto j;} ym[i]+=(k0+4*k3+k4)/6; } printf("x=%2.2f ",x); for(i=0;i<2;i++) printf("y%i=%2.8f ",i+1,ym[i]); printf(" h=%0.2f ",h); putchar('\n'); } while (x<=b); getchar(); return 0; } Результат виконання програми: з постійним кроком  зі змінним кроком  Висновок: Розв’язання систем лінійних диференціальних рівнянь методом Ейлера, Рунге – Кута або методами із змінним кроком інтегрування можна досить легко реалізувати на ЕОМ за допомогою програми в середовищі Сі. Основна перевага використання методу із змінним кроком інтегрування полягає в існуванні можливості розв’язування систем диференціальних рівнянь із заданою похибкою. Розв’язання таких систем на ЕОМ є дуже актуальним, оскільки цей процес є набагато легшим та короткотривалішим ніж розв’язання систем лінійних диференціальних рівнянь вручну.
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини